package com.zyp.strategy;

/**
 * 
 * 环境：Context:角色：持有一个strategy的引用
 * 
 * StrategyInterface:给定所有具体策略类所需的接口
 * 
 * StrategyA/B/C:包含具体的算法或行为
 * 
 * 具体的算法 ：strategyA/strategyB/strategyC可以互相替换，只是他们的具体计算策略不同
 * 
 *
 */
public class Context {

	//持有一个具体策略的对象
	private StrategyInterface strategy;
	
	/**
	 * 构造方法传入一个具体的策略对象就可以知道他们的针对的策略是什么
	 */
	public Context(StrategyInterface strategy){
		this.strategy=strategy;
	}
	
	/**
	 * 策略方法,调用具体的计算策略
	 */
	public void doStrategyMethod(double price){
		strategy.strategyMethod(price);
	}
	
	
}
